package psn.polaris.http.callback;

import psn.polaris.http.dto.HttpRequestDTO;

import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

public abstract class AbsTxtHttpCallBack implements IHttpCallBack<String>{

    /**
     * 执行方法
     *
     * @param requestDTO Http请求结果
     */
    @Override
    public void process(HttpRequestDTO requestDTO) {
        HashMap<Integer, byte[]> result = requestDTO.getResultMap();
        for (Map.Entry<Integer, byte[]> entry : result.entrySet()) {
            // 转换请求结果
            String txt = translateResult(entry.getValue());
            // 执行逻辑
            process(txt, requestDTO);
        }
    }

    /**
     * 执行方法
     * @param txt           执行文本
     * @param requestDTO    请求信息
     */
    public abstract void process(String txt, HttpRequestDTO requestDTO);

    /**
     * 结果翻译方法
     *
     * @param result 请求返回
     * @return 转换结果
     */
    public String translateResult(byte[] result) {
        byte[] temp = new byte[result.length];
        for (int i = 0; i < result.length; i++) {
            temp[i] = result[i];
        }
        String txt = new String(temp, StandardCharsets.UTF_8);
        return txt;
    }
}
